<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h1>组件</h1>
      <hr />
      <!-- 使用组件: 
      当vue组件到这个组件的时候,会用test组件中template的结构覆盖这个`<test></test>`
      -->
      <test></test>
      <hr />
    </div>

    <script src="./vue.js"></script>

    <script>
      // 定义组件
      const xxx = Vue.extend({
        template: `<div>
            <h2>Test组件</h2>
            <p>{{msg}}</p>
            <button @click="msg = msg + 1">setMsg</button>
            <button @click="handle">setMsg</button>
          </div>`,
        data() {
          return {
            msg: 'hello component',
          }
        },
        methods: {
          handle() {
            this.msg = this.msg + 9
          },
        },
      })

      const vm = new Vue({
        el: '#app',
        // 局部注册
        // 注意:组件的名字是由注册时的键决定的
        components: {
          // 键: 值
          // 键就是组件的名字
          // 值就是组件
          test: xxx,
        },
      })
    </script>
  </body>
</html>
